home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _135C9F119E6A4D7F8460D084BB917B6E < prev    next >
Encoding:
Text File  |  2004-01-06  |  1.2 KB  |  39 lines

  1.  
  2.       #include "../CGVPMacro.csi"
  3.  
  4.       VS20Only
  5.  
  6.       VertAttributes { POSITION_3 TEXCOORD0_2 TANG_3X3 }
  7.       MainInput { VIEWPROJ_MATRIX, LIGHT_POS, CAMERA_POS }
  8.       DeclarationsScript
  9.       {
  10.         IN_T0_TANG
  11.         OUT_T0_T1_T2_T3_T4_T5
  12.       }
  13.       PositionScript = PosCommon
  14.       CoreScript
  15.       {
  16.         OUT.Tex0.xy = IN.TexCoord0.xy;  // diffuse
  17.         OUT.Tex1.xy = IN.TexCoord0.xy;  // bump
  18.         OUT.Tex2.xy = IN.TexCoord0.xy;  // gloss
  19.  
  20.         TANG_MATR
  21.  
  22.         // store normalized light vector
  23.         float3 lVec = LightPos.xyz - vPos.xyz;
  24.         float3 lightVec = mul(objToTangentSpace, normalize(lVec));          
  25.         OUT.Tex3.xyz = lightVec.xyz;          
  26.         
  27.         // store normalized view vector
  28.         float3 vVec = CameraPos.xyz - vPos.xyz;
  29.         float3 viewVec = mul(objToTangentSpace, normalize(vVec));
  30.         OUT.Tex4.xyz = viewVec.xyz;
  31.  
  32.         float3 normal = IN.TNormal.xyz;
  33.         float fDot = dot(vVec, normal);
  34.         objToTangentSpace[2] = normal * sign(fDot);
  35.  
  36.         float3 halfAngleVector = normalize(lVec.xyz + vVec);
  37.         OUT.Tex5.xyz = mul(objToTangentSpace, halfAngleVector);
  38.       }
  39.